﻿/**
 * 必要时，给编辑区域添加一个可输入的p标签，开头或尾部
 * 防止，不能在开头或尾部点击输入的情况，
 * 比如当A、table、img等标签处于开头或结尾时，可能导致此情况发生
 */
(function(E, $){

var Consts = E.consts,
	Event = E.mod('Event'),
	emptyp = Consts.IE? '<p>&nbsp;</p>' : '<p><br></p>';

function appendP( ){
	var childs = E.$('body').children(),
		firstChild,
		lastChild,
		bodyHtml = E.$('body').html();
	
	bodyHtml = $.trim(bodyHtml);
	
	if( bodyHtml === '' ){
	// 如果内容是空
		return E.$('body').html(emptyp);
	}else if( !childs.size() ){
	// 如果没有子元素，文本不算
		return E.$('body').html('<p>'+ bodyHtml +'</p>');
	}
	
	firstChild = childs.eq(0);
	lastChild = childs.eq(childs.length - 1);
	
	// 如果body区域没有任何标签或最后一个标签不是P标签则给body区域追加一个P标签
	// 防止在最后插入一个标题或表格或div时，不方便再在后面添加其他内容
	var html='';
	if( lastChild.is('p') ){
		html = lastChild.html();
		html = $.trim(html);
		// 如果最后一个P标签innerhtml是>结尾的，则同样需要添加一个空P标签
		if( html
			&& '>' == html.substr(html.length - 1)
			//&& '<br>' != html.substr(html.length - 4)
			&& !lastChild.children().last().is('br')
		){
			E.$('body').append(emptyp);
		}else if(!html){
			// 空的p标签，里面添加一个br标签
			lastChild.append(Consts.IE ? '&nbsp;' : '<br/>');
		}
	}else{
	// 如果最后一个不是p标签
		E.$('body').append(emptyp);
	}
	
	// 取消自动给内容开头添加p标签的处理方式 2012-01-13（潘雪鹏）
	// 要添加的空标签到内容开头，使用右键菜单功能可能更加友好一些
	
	// 如果内容的开头部分是特殊标签则给开头加一个空格，
	// 方便光标点击输入内容到最前面
	//if( /^\s*<(h\d|table|div)/i.test(bodyHtml) ){
	//	E.$('body').prepend( emptyp );
	//}
}

Event.bind("onmonitor", function( e ){
	appendP( );
});

Event.bind("oncomplete", function(){
	appendP( );
});

})(jQEditor, jQuery);